/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
#ifndef IPSECINHITIPV4_H
#define IPSECINHITIPV4_H
/*
 * @Author: xvrui && 3505897045@qq.com
 * @Date: 2024-07-01 15:57:32
 * @LastEditors: RayX 3505897045@qq.com
 * @LastEditTime: 2024-07-06 00:05:45
 * @FilePath: /ns-3.26/src/ipsecinhitipv4/model/ipsecinhitipv4.h
 * @Description: 
 * 
 */
#include "ns3/ipv4-l3-protocol.h"
// #include "ips_header.h"
namespace ns3{

    class IpSecInhitIpv4 : public Ipv4L3Protocol{

        public:
            static TypeId GetTypeId(void);
            IpSecInhitIpv4(); // 构造函数
            ~IpSecInhitIpv4(); // 析构函数

            void Send(Ptr<Packet> packet, Ipv4Address source, Ipv4Address destination, uint8_t protocol, Ptr<Ipv4Route> route);
            // virtual void Receive(Ptr<Packet> packet, Ipv4Header const &header, Ptr<Ipv4Interface> incomingInterface);
            void Receive(Ptr<NetDevice> device, Ptr<const Packet> p, uint16_t protocol, const Address &from,
                          const Address &to, NetDevice::PacketType packetType) ;

        private:
        //     void Encrypt(Ptr<Packet> packet);
        //     void Decrypt(Ptr<Packet> packet);
            void Encrypt();
            void Decrypt();
    };
}

#endif /* IPSECINHITIPV4_H */

